﻿<!--
	RegExpress
	
	Copyright (c) 2010, Daniel McGaughran
	
	Licensed under the Apache Licence, Version 2.0 (the "Licence");
	you may not use this file except in compliance with the Licence.
	You may obtain a copy of the License at
	
		http://www.apache.org/licenses/LICENSE-2.0
	
	Unless required by applicable law or agreed to in writing, software
	distributed under the Licence is distributed on an "AS IS" BASIS,
	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
	See the Licence for the specific language governing permissions and
	limitations under the Licence.
	
	-->

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">


	<!-- ScrollBar Style/Template -->
	<Style x:Key="ScrollBarLineButton" TargetType="{x:Type RepeatButton}">
		<Setter Property="SnapsToDevicePixels" Value="True"/>
		<Setter Property="OverridesDefaultStyle" Value="true"/>
		<Setter Property="Focusable" Value="false"/>
		<Setter Property="Template">
			<Setter.Value>
				<ControlTemplate TargetType="{x:Type RepeatButton}">
					<Border 
          Name="Border"
          Margin="1" 
          CornerRadius="2" 
          Background="{StaticResource ListBgndBrush}"
          BorderBrush="{StaticResource OrnamentFgndBrush}"
          BorderThickness="1">
						<Path Name="glyph" 
            HorizontalAlignment="Center"
            VerticalAlignment="Center"
            Fill="{StaticResource OrnamentFgndBrush}"
            Data="{Binding Path=Content,RelativeSource={RelativeSource TemplatedParent}}" />
					</Border>
					<ControlTemplate.Triggers>
						<Trigger Property="IsPressed" Value="true">
							<Setter TargetName="Border" Property="BorderBrush" Value="{StaticResource ButtonFrameBrush}" />
							<Setter TargetName="glyph" Property="Fill" Value="{StaticResource ButtonFrameBrush}" />
						</Trigger>
						<Trigger Property="IsEnabled" Value="false">
							<Setter Property="Foreground" Value="{StaticResource ItemBgndBrush}"/>
						</Trigger>
					</ControlTemplate.Triggers>
				</ControlTemplate>
			</Setter.Value>
		</Setter>
	</Style>

	<Style x:Key="ScrollBarPageButton" TargetType="{x:Type RepeatButton}">
		<Setter Property="SnapsToDevicePixels" Value="True"/>
		<Setter Property="OverridesDefaultStyle" Value="true"/>
		<Setter Property="IsTabStop" Value="false"/>
		<Setter Property="Focusable" Value="false"/>
		<Setter Property="Template">
			<Setter.Value>
				<ControlTemplate TargetType="{x:Type RepeatButton}">
					<Border Background="{StaticResource ItemBgndBrush}" />
				</ControlTemplate>
			</Setter.Value>
		</Setter>
	</Style>

	<Style x:Key="ScrollBarThumb" TargetType="{x:Type Thumb}">
		<Setter Property="SnapsToDevicePixels" Value="True"/>
		<Setter Property="OverridesDefaultStyle" Value="true"/>
		<Setter Property="IsTabStop" Value="false"/>
		<Setter Property="Focusable" Value="false"/>
		<Setter Property="Template">
			<Setter.Value>
				<ControlTemplate TargetType="{x:Type Thumb}">
					<Border 
          CornerRadius="2" 
          Background="{TemplateBinding Background}"
          BorderBrush="{TemplateBinding BorderBrush}"
          BorderThickness="1" />
				</ControlTemplate>
			</Setter.Value>
		</Setter>
	</Style>
	

	<ControlTemplate x:Key="VerticalScrollBar" TargetType="{x:Type ScrollBar}">
		<Grid >
			<Grid.RowDefinitions>
				<RowDefinition MaxHeight="18"/>
				<RowDefinition Height="0.00001*"/>
				<RowDefinition MaxHeight="18"/>
			</Grid.RowDefinitions>
			<Border
      Grid.RowSpan="3"
      CornerRadius="2" />
			<RepeatButton 
      Grid.Row="0"                           
      Style="{StaticResource ScrollBarLineButton}"
      Height="18"
      Command="ScrollBar.LineUpCommand"
      Content="M 0 4 L 8 4 L 4 0 Z" />
			<Track 
      Name="PART_Track"
      Grid.Row="1"
      IsDirectionReversed="true">
				<Track.DecreaseRepeatButton>
					<RepeatButton 
          Style="{StaticResource ScrollBarPageButton}"
          Command="ScrollBar.PageUpCommand" />
				</Track.DecreaseRepeatButton>
				<Track.Thumb>
					<Thumb 
          Style="{StaticResource ScrollBarThumb}" 
          Margin="1,0,1,0"  
          Background="{StaticResource ListBgndBrush}"
          BorderBrush="{StaticResource OrnamentFgndBrush}" />
				</Track.Thumb>
				<Track.IncreaseRepeatButton>
					<RepeatButton 
          Style="{StaticResource ScrollBarPageButton}"
          Command="ScrollBar.PageDownCommand" />
				</Track.IncreaseRepeatButton>
			</Track>
			<RepeatButton 
      Grid.Row="3" 
      Style="{StaticResource ScrollBarLineButton}"
      Height="18"
      Command="ScrollBar.LineDownCommand"
      Content="M 0 0 L 4 4 L 8 0 Z"/>
		</Grid>
	</ControlTemplate>

	<ControlTemplate x:Key="HorizontalScrollBar" TargetType="{x:Type ScrollBar}">
		<Grid >
			<Grid.ColumnDefinitions>
				<ColumnDefinition MaxWidth="18"/>
				<ColumnDefinition Width="0.00001*"/>
				<ColumnDefinition MaxWidth="18"/>
			</Grid.ColumnDefinitions>
			<Border
      Grid.ColumnSpan="3"
      CornerRadius="2"  />
			<RepeatButton 
      Grid.Column="0"                           
      Style="{StaticResource ScrollBarLineButton}"
      Width="18"
      Command="ScrollBar.LineLeftCommand"
      Content="M 4 0 L 4 8 L 0 4 Z" />
			<Track 
      Name="PART_Track"
      Grid.Column="1"
      IsDirectionReversed="False">
				<Track.DecreaseRepeatButton>
					<RepeatButton 
          Style="{StaticResource ScrollBarPageButton}"
          Command="ScrollBar.PageLeftCommand" />
				</Track.DecreaseRepeatButton>
				<Track.Thumb>
					<Thumb 
          Style="{StaticResource ScrollBarThumb}" 
          Margin="0,1,0,1"  
          Background="{StaticResource ListBgndBrush}"
          BorderBrush="{StaticResource OrnamentFgndBrush}" />
				</Track.Thumb>
				<Track.IncreaseRepeatButton>
					<RepeatButton 
          Style="{StaticResource ScrollBarPageButton}"
          Command="ScrollBar.PageRightCommand" />
				</Track.IncreaseRepeatButton>
			</Track>
			<RepeatButton 
      Grid.Column="3" 
      Style="{StaticResource ScrollBarLineButton}"
      Width="18"
      Command="ScrollBar.LineRightCommand"
      Content="M 0 0 L 4 4 L 0 8 Z"/>
		</Grid>
	</ControlTemplate>

	<Style TargetType="{x:Type ScrollBar}">
		<Setter Property="SnapsToDevicePixels" Value="True"/>
		<Setter Property="OverridesDefaultStyle" Value="true"/>
		<Style.Triggers>
			<Trigger Property="Orientation" Value="Horizontal">
				<Setter Property="Width" Value="Auto"/>
				<Setter Property="Height" Value="18" />
				<Setter Property="Template" Value="{StaticResource HorizontalScrollBar}" />
			</Trigger>
			<Trigger Property="Orientation" Value="Vertical">
				<Setter Property="Width" Value="18"/>
				<Setter Property="Height" Value="Auto" />
				<Setter Property="Template" Value="{StaticResource VerticalScrollBar}" />
			</Trigger>
		</Style.Triggers>
	</Style>


	<!-- ScrollViewer Style/Template -->

	<ControlTemplate x:Key="ColumnWrapPanelScroller" TargetType="{x:Type ScrollViewer}">
		<Grid x:Name="Grid" Background="{TemplateBinding Background}">
			<Grid.ColumnDefinitions>
				<ColumnDefinition Width="*"/>
				<ColumnDefinition Width="Auto"/>
			</Grid.ColumnDefinitions>
			<Grid.RowDefinitions>
				<RowDefinition Height="*"/>
				<RowDefinition Height="Auto"/>
			</Grid.RowDefinitions>
			<ScrollContentPresenter Margin="{TemplateBinding Padding}" x:Name="PART_ScrollContentPresenter"
						Grid.Column="0" Grid.Row="0" Content="{TemplateBinding Content}"
						ContentTemplate="{TemplateBinding ContentTemplate}"
						CanContentScroll="{TemplateBinding CanContentScroll}"
						CanHorizontallyScroll="False" CanVerticallyScroll="False"/>
			<ScrollBar Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}"
						Cursor="Arrow" x:Name="PART_VerticalScrollBar" Grid.Column="1" Grid.Row="0"
						ViewportSize="{TemplateBinding ViewportHeight}"
						Maximum="{TemplateBinding ScrollableHeight}" Minimum="0"
						Value="{Binding Path=VerticalOffset, Mode=OneWay,
								RelativeSource={RelativeSource TemplatedParent}}"
						AutomationProperties.AutomationId="VerticalScrollBar"/>
			<ScrollBar Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}"
						Cursor="Arrow" x:Name="PART_HorizontalScrollBar" Grid.Column="0" Grid.Row="1"
						Orientation="Horizontal" ViewportSize="{TemplateBinding ViewportWidth}"
						Maximum="{TemplateBinding ScrollableWidth}" Minimum="0"
						Value="{Binding Path=HorizontalOffset, Mode=OneWay,
								RelativeSource={RelativeSource TemplatedParent}}"
						AutomationProperties.AutomationId="HorizontalScrollBar"/>
		</Grid>
	</ControlTemplate>
	
	<Style TargetType="{x:Type ScrollViewer}">
		<Setter Property="Template" Value="{StaticResource ColumnWrapPanelScroller}" />
	</Style>

</ResourceDictionary>